Gültigkeitsprüfung

Der Datenbankentwickler kann die Gültigkeit (Validität) einer Benutzereingabe auf zwei Arten prüfen: Einfachere Prüfungen kann er durch einen Ausdruck in der Eigenschaft Gültigkeitsregel eines Tabellenfelds, einer Tabellenzeile (eines Datensatzes) oder eines Steuerelements definieren. Für komplexere Prüfungen programmiert er eine Ereignisprozedur

1 Gültigkeitsregel 

Für ein Beispiel einer Gültigkeitsregel markieren Sie das Feld TxfBuchstabenpräfix des Unterformulars Subfrm Buchstabenalternativen, drücken »Alt/Enter und lesen den Wert der Eigenschaft Gültigkeitsregel. Der folgende Ausschnitt aus der Eigenschaftenliste zeigt die Gültigkeitsregel und -meldung für die Eingabe des Buchstabenpräfix einer Zuordnungsalternative:

Die Gültigkeitsregel >= "A" Und  <= DomMax("Buchstabenpräfix";"[QuizBUCHSTABEN_ALTERNATIVEN]"; "Fragenschlüssel=" & [Fragenschlüssel]) garantiert, dass ein im Textfeld TxfBuchstabenpräfix gespeichertes Zeichen ...

  1. grösser oder gleich "A" ist

  2. das höchste der im entsprechenden Datensatz der Tabelle QuizBUCHSTABEN_ALTERNATIVEN gespeicherten Buchstabenpräfices nicht übersteigt. DomMax(Ausdr; Domäne[; Kriterium]) sucht den höchsten Wert in einer Domäne. Ausdr ist ein Feld einer Domäne (Tabelle oder Abfrage), und das optionale Kriterium entspricht in der Regel dem WHERE-Teil einer SQL-Anweisung.

Jeder Gültigkeitsregel können Sie eine Gültigkeitsmeldung zuordnen, welche die voreingestellte Meldung (im wesentlich die Anzeige der Gültigkeitsregel) ersetzt.

2 Gültigkeitsprozedur

Flexiblere Gültigkeitsprüfungen gestatten selbst programmierte VBA-Prozeduren. In einer Mehrfachwahlaufgabe darf der Benutzer zum Beispiel höchstens eine der vier Alternativen wählen. Im folgenden Bildschirmausschnitt macht den Benutzer keine Gültigkeitsprozedur darauf aufmerksam, wegen dass er nur ein Kontrollkästchen anklicken darf:

Die folgende Gültigkeitsprozedur zeigt hingegen nach einem zweiten Markierungsversuch die Fehlermeldung "Markieren Sie nur  eine  Alternative". Eine Prozedur. die einen Klick auf ein zweites Kontrollkästchen verhindert, muss den Benutzer allerdings eine bestehende Markierung löschen lassen, ohne dass er eine Fehlermeldung erhält. Der folgende Entwurfscode prüft deshalb die Gültigkeit nur nach einem Klick auf ein unmarkiertes Kontrollkästchen:

Verhindere, dass mehr als eine Mehrfachalternative markiert wird
  Falls der Klick das Kontrollkästchen markiert und SCORESMC bereits eine markierte Alternative enthält
    Warne den Benutzer
    Mache die Markierung rückgängig
  sonst
    Aktualisiere SCORESMC

Die VBA-Implementation des Entwurfscode verwendet die Funktion DCount. Diese sucht die Zahl der markierten Alternativen (der Alternativen mit dem Wert -1 des Felds Benutzerlösung) der laufenden Mehrfachwahlfrage in der Tabelle SCORESMC. Falls das Ergebnis > 0 ist, erscheint eine Fehlermeldung.

'--- Prüfe, ob bereits eine Mehrfachalternative markiert ist
Private Sub KkBenutzerlösung_Click()
  '-- Prüfe n i c h t , falls der Klick eine Markierung aufhebt
  '   (Vier unmarkierte Alternativen sind gültig)
  If [KkBenutzerlösung] = True Then  'Markierung gesetzt
    If DCount( _
       "[Fragenschlüssel]", _
       "SCORESMC", _
       "[Fragenschlüssel]=[Forms]![FrmMehrfachwahl]![TxfFragenschlüssel]" & _
       " AND [Benutzerlösung]=-1") > 0 _
    Then
      MsgBox "Markieren Sie nur  e i n e  Alternative"
      [KkBenutzerlösung] = False
    End If
  Else
    'Aktualisiere die aufgehobene Markierung in SCORESMC
    '(Sonst würde erst das Verlassen des laufenden Datensatzes aktualisieren)
    Me.Refresh
  End If
End Sub

Fallbeispiel einer Gültigkeitsprüfung: Matrikelnummer

Testing und Debugging (Veranschaulichung an einem Beispiel)

Arten der Gültigkeitsprüfung